// 给你一个按照非递减顺序排列的整数数组 nums，和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
// 如果数组中不存在目标值 target，返回 [-1, -1]。
// 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
var searchRange = function (nums, target) {
  // 折半查找第一个位置
  let i = 0, j = nums.length - 1, sRange = [-1, -1];
  let start1 = end1 = start2 = end2 = 0;
  while (i <= j) {
    let tempInx = Math.floor((i + j) / 2);
    if (target === nums[tempInx]) {
      sRange = [tempInx, tempInx]; // 初始化
      start1 = i;
      end1 = tempInx - 1;
      start2 = tempInx + 1;
      end2 = j;
      console.log('执行');
      break;
    } else if (target > nums[tempInx]) {
      i = tempInx + 1;
    } else {
      j = tempInx - 1;
    }
  }
  // 找初始位置

  while (start1 <= end1) {
    let tempInx = Math.floor((start1 + end1) / 2);
    if (target === nums[tempInx]) {
      sRange[0] = tempInx;
      end1 = tempInx - 1;
    } else {
      start1 = tempInx + 1;
    }
  }
  while (start2 <= end2) {
    let tempInx = Math.floor((start2 + end2) / 2);
    if (target === nums[tempInx]) {
      sRange[1] = tempInx;
      start2 = tempInx + 1;
    } else {
      end2 = tempInx - 1;
    }
  }
  return sRange;
};
// console.log(searchRange([5, 7, 7, 8, 8, 10], 8));
// console.log(searchRange([5, 7, 7, 8, 8, 10], 6));
console.log(searchRange([], 0));